package name.huliqing.qfaces.temp;
//package name.huliqing.qfaces.component;
//
//import java.io.IOException;
//import java.util.Map;
//import java.util.logging.Logger;
//import javax.el.MethodExpression;
//import javax.faces.context.FacesContext;
//import javax.faces.context.ResponseWriter;
//import name.huliqing.qfaces.QFaces;
// 
///**
// * @author huliqing
// *
// */
//public class ____20100614_Helper extends Frame implements Ajax{
//	private final static Logger logger = Logger.getLogger(____20100614_Helper.class.getName());
//	
//	// ---- 参数类型
//	private MethodExpression listener;	// 所绑定的用于调用后台帮助信息的method
//	private Boolean lazy;			// true：ajax方式调用，否则直接渲染在页面
//	private String message;			// 帮助信息，如果绑定了message,那么将不通过listener从后台获取数据,
//	private String image;			// 图片按钮的路径(src),客户端组件传递过来的值，如果为null,则使用默认的imageDefault
//	private String tip;				// 按钮的tip提示信息
//	private String style;			// 内容的style（不含Frame）
//	private String styleClass;		// 内容的class样式
//	
//	// ---- 内部参数
//	private String ID_CLIENT;
//	private String ID_BUTTON;
//	private String ID_CONTENT;
//	
//	@Override
//	public void restoreState(FacesContext fc, Object state) {
//		Object[] obj = (Object[]) state;
//		super.restoreState(fc, obj[0]);
//		this.listener = (MethodExpression) obj[1];
//	}
//	
//	@Override
//	public Object saveState(FacesContext fc) {
//		Object[] obj = new Object[2];
//		obj[0] = super.saveState(fc);
//		obj[1] = this.listener;
//		return obj;
//	}
//	
//	public void setListener(MethodExpression listener) {
//		this.listener = listener;
//	}
//	
//	public void ajaxInvokeOnGet(Map<String, String> params, FacesContext fc) {
//        String listenerExp = params.get("listenerExp");
//        MethodExpression listener = QFaces.createMethodExpression(listenerExp, String.class, new Class[]{});
//        String helpMessage = (String) listener.invoke(fc.getELContext(), new Object[]{});
//        QFaces.getResponse().responseHTML(fc, helpMessage);
//	}
//
//	public void ajaxInvokeOnPost(Map<String, String> params, FacesContext fc) {
//		logger.warning("Unsupport method:ajaxInvokeOnPost");
//	}
//
//	// ----------------------------------------------
//
//	protected void init(FacesContext fc) throws IOException {
//		super.init(fc);
//    	this.lazy = this.convertToBoolean(this.getAttributeByDefault("lazy", true));
//    	this.image = (String) this.getAttributeByDefault("image", "name/huliqing/qfaces/images/helper.png");
//    	this.tip = (String) this.getAttributeByDefault("tip", "Click me");
//    	this.message = (String) this.getAttributeByDefault("message", "");
//    	this.style = (String) this.getAttributeByDefault("style", "");
//    	this.styleClass = (String) this.getAttributeByDefault("styleClass", "");
//    	this.ID_CLIENT = this.getClientId(fc);
//    	this.ID_BUTTON = this.ID_CLIENT + ":button";
//    	this.ID_CONTENT = this.ID_CLIENT + ":content";
//    	QFaces.getResLoader().loadJavascript("name/huliqing/qfaces/resource/Helper.js", this);
//	}
//	
//	@Override
//	protected void encodeBeforeFrame(FacesContext fc) throws IOException {
//		super.encodeBeforeFrame(fc);
//		ResponseWriter rw = fc.getResponseWriter();
//		rw.startElement("img", this);
//		rw.writeAttribute("id", ID_BUTTON, null);
//		rw.writeAttribute("name", ID_BUTTON, null);
//		rw.writeAttribute("src", QFaces.getResLoader().makeImageSrc(this.image), null);
//		rw.writeAttribute("title", tip, null);
//		rw.endElement("img");
//	}
//
//	@Override
//	protected void encodeFrameBody(FacesContext fc) throws IOException {
//		ResponseWriter rw = fc.getResponseWriter();
//		// 如果直接绑定了message,则不进行listener绑定
//		String helpMessage = "";
//		if (message != null && message.length() > 0) {
//			helpMessage = message;
//		} else {
//			if (this.listener == null) {
//				logger.warning("You must binding at least one attribute \"message\" or \"listener\" ");				
//			} else {
//				if (!lazy) {
//					helpMessage = (String) ____20100614_Helper.this.listener.invoke(fc.getELContext(), new Object[]{});
//				}				
//			}
//		}
//		rw.startElement("div", this);
//		rw.writeAttribute("id", ID_CONTENT, null);
//		rw.writeAttribute("name", ID_CONTENT, null);
//		rw.writeAttribute("class", this.styleClass, null);
//		rw.writeAttribute("style", this.style, null);
//    	rw.writeText(helpMessage, null);
//		rw.endElement("div");
//    	
//		StringBuilder sb = new StringBuilder("QFaces.Faces.UIHelper.init(");
//		sb.append("\"").append(this.getClientId(fc)).append("\"");
//		sb.append(",\"").append(this.getClass().getName()).append("\"");
//		sb.append(",\"").append(this.listener != null ? this.listener.getExpressionString() : "").append("\"");
//		sb.append(",\"").append(this.lazy.toString()).append("\"");
//		sb.append(",\"").append(this.ID_BUTTON).append("\"");
//		sb.append(",\"").append(this.ID_CONTENT).append("\"");
//		sb.append(");");
//
//		rw.startElement("script", this);
//		rw.writeAttribute("type", "text/javascript", null);
//		rw.writeText(sb, null);
//		rw.endElement("script");
//	}
//}
